{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "provenance": [],
      "gpuType": "T4"
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "language_info": {
      "name": "python"
    },
    "accelerator": "GPU"
  },
  "cells": [
    {
      "cell_type": "markdown",
      "source": [
        "# Loading the Corpus"
      ],
      "metadata": {
        "id": "xUDBdXFJtsaz"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "target_url = \"https://cs.stanford.edu/people/karpathy/char-rnn/shakespear.txt\""
      ],
      "metadata": {
        "id": "BQAeB-gWtreA"
      },
      "execution_count": 1,
      "outputs": []
    },
    {
      "cell_type": "code",
      "execution_count": 2,
      "metadata": {
        "id": "37lM77r8tikI"
      },
      "outputs": [],
      "source": [
        "import urllib\n",
        "corpus = []\n",
        "for line in urllib.request.urlopen(target_url).readlines():\n",
        "    corpus.append(line.strip())"
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "# Comment out this cell, to run the model on the shakespear dataset\n",
        "corpus = ['cat chases mouse',\n",
        "        'cat catches mouse',\n",
        "        'cat eats mouse',\n",
        "        'mouse runs into hole',\n",
        "        'cat says bad words',\n",
        "        'cat and mouse are pals',\n",
        "        'cat and mouse are chums',\n",
        "        'mouse stores food in hole',\n",
        "        'cat stores food in house',\n",
        "        'mouse sleeps in hole',\n",
        "        'cat sleeps in house',\n",
        "        'cat and mouse are buddies',\n",
        "        'mouse lives in hole',\n",
        "        'cat lives in house']"
      ],
      "metadata": {
        "id": "EiNMLq2LUXZl"
      },
      "execution_count": 11,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "corpus[0]"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 56
        },
        "id": "Aa0MT3dYt29U",
        "outputId": "2ce71dab-dd4d-429b-f58f-70a1c99b2263"
      },
      "execution_count": 12,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "'cat chases mouse'"
            ],
            "application/vnd.google.colaboratory.intrinsic+json": {
              "type": "string"
            }
          },
          "metadata": {},
          "execution_count": 12
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "### Preprocessing our Corpus"
      ],
      "metadata": {
        "id": "npb6JwilvByB"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "import re, html\n",
        "\n",
        "def pad(line, context_window=4):\n",
        "  pad_size = context_window // 2\n",
        "  return [\"<pad>\" for i in range(pad_size)] + line + [\"<pad>\" for i in range(pad_size)]\n",
        "\n",
        "def preprocess(line, context_window):\n",
        "  if not isinstance(line, str):\n",
        "    line = line.decode('utf-8')\n",
        "  line = html.unescape(line).lower()\n",
        "  line = re.sub('[^a-z]',' ', line)\n",
        "  return pad(line.split(), context_window)\n"
      ],
      "metadata": {
        "id": "teNeApQauBzR"
      },
      "execution_count": 13,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "preprocess(corpus[5], 4)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "oVHqfdRzuZmK",
        "outputId": "21edc7c5-0e65-4496-cbf8-791d70ca1307"
      },
      "execution_count": 14,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "['<pad>', '<pad>', 'cat', 'and', 'mouse', 'are', 'pals', '<pad>', '<pad>']"
            ]
          },
          "metadata": {},
          "execution_count": 14
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "CONTEXT_WINDOW = 6\n",
        "corpus_processed = [preprocess(line, CONTEXT_WINDOW) for line in corpus]"
      ],
      "metadata": {
        "id": "t_cNkF1hwGnN"
      },
      "execution_count": 15,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "source": [
        "# Preparing Co-Occurrence Matrix"
      ],
      "metadata": {
        "id": "YD-m0faev4kG"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# First we need our vocabulary\n",
        "vocab = {}\n",
        "size = 0\n",
        "\n",
        "for line in corpus_processed:\n",
        "  for word in line:\n",
        "    if word not in vocab:\n",
        "      vocab[word] = size\n",
        "      size += 1\n",
        "\n",
        "rev_vocab = {i:word for word, i in vocab.items()}"
      ],
      "metadata": {
        "id": "GQ_PVlcpua2M"
      },
      "execution_count": 16,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "vocab['mouse'], rev_vocab[3]"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "tw5APor1wdPk",
        "outputId": "26f5224f-8c47-4ad0-fe32-4fc95c38e333"
      },
      "execution_count": 17,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "(3, 'mouse')"
            ]
          },
          "metadata": {},
          "execution_count": 17
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "size"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "VNuWNKvlwd63",
        "outputId": "20ffe9eb-16ba-4802-b4f8-f1cb2098ffd9"
      },
      "execution_count": 18,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "23"
            ]
          },
          "metadata": {},
          "execution_count": 18
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "from collections import defaultdict\n",
        "from tqdm import tqdm\n",
        "CONTEXT_WINDOW = 6\n",
        "\n",
        "X, y = [], []\n",
        "\n",
        "for line in tqdm(corpus_processed):\n",
        "  for i in range(CONTEXT_WINDOW // 2, len(line) - CONTEXT_WINDOW // 2):\n",
        "    curr_word = line[i]\n",
        "    prev_words = line[i-CONTEXT_WINDOW // 2:i]\n",
        "    next_words = line[i+1: i+1+(CONTEXT_WINDOW // 2)]\n",
        "    X.append([vocab[i] for i in prev_words + next_words])\n",
        "    y.append(vocab[curr_word])"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "6Tqb2hsLwgSq",
        "outputId": "f48f864c-ebd8-474d-84db-5007313c8be8"
      },
      "execution_count": 105,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "100%|██████████| 14/14 [00:00<00:00, 5147.74it/s]\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "X[:5]"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "1GSVYiNsyA7m",
        "outputId": "485cd0e7-573a-4578-cbaa-13eddd9bfcd0"
      },
      "execution_count": 106,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "[[0, 0, 0, 2, 3, 0],\n",
              " [0, 0, 1, 3, 0, 0],\n",
              " [0, 1, 2, 0, 0, 0],\n",
              " [0, 0, 0, 4, 3, 0],\n",
              " [0, 0, 1, 3, 0, 0]]"
            ]
          },
          "metadata": {},
          "execution_count": 106
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "y[:5]"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "K6OYCImQtr-v",
        "outputId": "45ef5a9f-1b8f-4bc4-e44a-1ef81e129e7c"
      },
      "execution_count": 107,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "[1, 2, 3, 1, 4]"
            ]
          },
          "metadata": {},
          "execution_count": 107
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "# Word2Vec Embedding Model"
      ],
      "metadata": {
        "id": "K2NsZMpYyh03"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# CONSTANTS\n",
        "VOCAB_SIZE = size\n",
        "EMB_SIZE = 8\n",
        "NUM_EPOCHS = 10"
      ],
      "metadata": {
        "id": "8A3814tnu0f0"
      },
      "execution_count": 22,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "import numpy as np\n",
        "import torch\n",
        "import torch.nn as nn\n",
        "from torch.utils.data import DataLoader, Dataset\n",
        "import torch.nn.functional as F"
      ],
      "metadata": {
        "id": "IkJmSMzYIKeh"
      },
      "execution_count": 23,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')\n",
        "device"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "5MSnvEsTINR5",
        "outputId": "031fefda-eef9-4247-dc0a-6301aa1c132a"
      },
      "execution_count": 24,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "device(type='cuda', index=0)"
            ]
          },
          "metadata": {},
          "execution_count": 24
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "class Word2Vec(nn.Module):\n",
        "\n",
        "    def __init__(self, vocab_size, embedding_size):\n",
        "        super().__init__()\n",
        "        self.word_emb = nn.Embedding(\n",
        "            num_embeddings=vocab_size,\n",
        "            embedding_dim=embedding_size,\n",
        "        )\n",
        "        self.fc = nn.Linear(embedding_size, vocab_size)\n",
        "\n",
        "    def forward(self, x):\n",
        "        embds = self.word_emb(x)\n",
        "        emb = torch.mean(embds, dim=1)\n",
        "        out = self.fc(emb)\n",
        "        return out\n",
        "\n",
        "word2vec = Word2Vec(vocab_size=VOCAB_SIZE, embedding_size=EMB_SIZE)\n",
        "word2vec = word2vec.to(device)"
      ],
      "metadata": {
        "id": "5nDytIGHyhFo"
      },
      "execution_count": 108,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "optimizer = torch.optim.Adam(word2vec.parameters(), lr=0.001)"
      ],
      "metadata": {
        "id": "3P3ifruc3rQ3"
      },
      "execution_count": 109,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "class CustomDataset(torch.utils.data.Dataset):\n",
        "  def __init__(self, X, y):\n",
        "    self.X = X\n",
        "    self.y = y\n",
        "\n",
        "  def __getitem__(self, idx):\n",
        "    return torch.LongTensor(self.X[idx]), torch.LongTensor([self.y[idx]])\n",
        "\n",
        "  def __len__(self):\n",
        "    return len(self.X)\n",
        "\n",
        "dataset = CustomDataset(X, y)\n",
        "train_dataset = DataLoader(dataset, batch_size=8, shuffle=True)"
      ],
      "metadata": {
        "id": "Z4cJA7g66F-s"
      },
      "execution_count": 110,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "batch = next(iter(train_dataset))"
      ],
      "metadata": {
        "id": "YBwUlk8hHO7v"
      },
      "execution_count": 111,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "word2vec.train()\n",
        "\n",
        "loss_func = nn.CrossEntropyLoss()\n",
        "\n",
        "losses = []\n",
        "for epoch in tqdm(range(NUM_EPOCHS)):\n",
        "  epoch_loss = 0\n",
        "  for X, y in train_dataset:\n",
        "    X, y = X.to(device), y.to(device)\n",
        "    output = word2vec(X)\n",
        "    loss = loss_func(output, y.squeeze(dim=1))\n",
        "    loss.backward()\n",
        "    optimizer.step()\n",
        "    optimizer.zero_grad()\n",
        "    epoch_loss += loss.cpu().detach().item()\n",
        "\n",
        "  losses.append(epoch_loss)\n",
        "print(f\"Epoch {epoch}: loss = {epoch_loss}\")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "ryVYpfll36zj",
        "outputId": "3acbac82-d6c6-4054-c94f-9f4616ce9b98"
      },
      "execution_count": 120,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "100%|██████████| 10/10 [00:00<00:00, 68.27it/s]"
          ]
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Epoch 9: loss = 3.3023142516613007\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "word_vectors = word2vec.word_emb(torch.LongTensor([i for i in range(VOCAB_SIZE)]).to(device)).cpu().detach().numpy()"
      ],
      "metadata": {
        "id": "-0zPGZyIOQ7o"
      },
      "execution_count": 121,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "import pandas as pd\n",
        "\n",
        "word_vectors = pd.DataFrame(word_vectors, columns=[f\"f_{i}\" for i in range(EMB_SIZE)])\n",
        "word_vectors['word'] = [rev_vocab[i] for i in range(0, VOCAB_SIZE)]"
      ],
      "metadata": {
        "id": "GSBIPsRTR2R8"
      },
      "execution_count": 122,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "word_vectors"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 796
        },
        "id": "gp89nwOUSOVh",
        "outputId": "229df3fb-82c8-476a-998e-f03ccd0f4b3c"
      },
      "execution_count": 123,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "         f_0       f_1       f_2       f_3       f_4       f_5       f_6  \\\n",
              "0  -1.067397 -0.801663 -1.332825  1.015873 -0.902183 -0.245418  0.608063   \n",
              "1   5.155348  3.876250  0.261261 -2.418043  0.437870  0.465762  2.436163   \n",
              "2  -1.559241 -2.174669 -1.384145  2.044338  2.503202 -3.054060  1.888509   \n",
              "3  -3.267818  4.795168  2.291086  0.573898 -2.850217  1.131927 -3.155930   \n",
              "4  -1.277344 -3.426071 -1.365879  0.884095  1.733199 -4.235494  2.297269   \n",
              "5  -1.652216 -3.294243 -1.825176  2.506169 -0.239695 -3.938842  1.899568   \n",
              "6  -2.081284 -0.991527 -2.824138  6.219646  3.111309  3.350767  0.195719   \n",
              "7  -0.572580 -3.827738 -2.566583 -1.857773  2.447538 -2.053251 -0.474032   \n",
              "8   5.396008  3.136331 -1.476307 -3.636201 -3.398837 -2.878013 -2.151384   \n",
              "9  -5.122947  2.646393  2.569002 -0.548096 -1.465672  0.519846  4.027491   \n",
              "10 -2.207423  2.251546 -1.246325 -1.410405  3.402066  2.043521  1.952095   \n",
              "11 -0.852711  1.271755  3.417938  1.730503  1.551274  1.811487  1.327402   \n",
              "12 -0.830954 -0.238002  2.482760  1.094060  3.143410 -2.386743 -1.393598   \n",
              "13 -2.500729 -7.437476  0.381696  2.124998  1.121050 -4.185350 -1.555551   \n",
              "14  3.923695  0.493951 -0.211973  3.274733 -1.499583 -3.073927  0.009240   \n",
              "15  3.928817 -0.561484  0.327170  3.035815 -1.720800 -2.495250 -0.713365   \n",
              "16  0.756436  0.817144 -0.026023 -1.671095 -0.971462 -3.027191  4.876816   \n",
              "17 -1.088618 -1.546456  2.420271  6.035884 -0.142059  1.539912  1.930901   \n",
              "18  2.885014 -3.826505 -4.196731  0.857041  0.234334  3.452073  4.544253   \n",
              "19 -0.762408  3.808641  3.753195 -1.143914 -4.631677 -1.858037 -2.033191   \n",
              "20 -0.740004 -1.818430  1.609721  5.877964  0.310047 -0.692936  2.140351   \n",
              "21  4.888302  0.672865 -0.668151  2.791534 -1.121068 -2.138875 -0.546979   \n",
              "22 -0.793976 -2.477415  2.654468  4.474229  1.701904 -0.669288  2.125443   \n",
              "\n",
              "         f_7     word  \n",
              "0  -0.991950    <pad>  \n",
              "1   3.617084      cat  \n",
              "2  -0.352399   chases  \n",
              "3   1.696312    mouse  \n",
              "4  -1.856599  catches  \n",
              "5  -0.787619     eats  \n",
              "6   4.316447     runs  \n",
              "7   1.734207     into  \n",
              "8  -2.437088     hole  \n",
              "9  -0.476111     says  \n",
              "10 -3.563816      bad  \n",
              "11 -2.425784    words  \n",
              "12 -0.575753      and  \n",
              "13  3.102188      are  \n",
              "14  1.534183     pals  \n",
              "15  0.809275    chums  \n",
              "16 -0.877191   stores  \n",
              "17 -3.473943     food  \n",
              "18  0.045954       in  \n",
              "19 -5.890861    house  \n",
              "20 -1.573727   sleeps  \n",
              "21  0.807099  buddies  \n",
              "22 -1.356035    lives  "
            ],
            "text/html": [
              "\n",
              "  <div id=\"df-e1cc2b26-6b24-4965-85ee-e4d873086331\" class=\"colab-df-container\">\n",
              "    <div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>f_0</th>\n",
              "      <th>f_1</th>\n",
              "      <th>f_2</th>\n",
              "      <th>f_3</th>\n",
              "      <th>f_4</th>\n",
              "      <th>f_5</th>\n",
              "      <th>f_6</th>\n",
              "      <th>f_7</th>\n",
              "      <th>word</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>-1.067397</td>\n",
              "      <td>-0.801663</td>\n",
              "      <td>-1.332825</td>\n",
              "      <td>1.015873</td>\n",
              "      <td>-0.902183</td>\n",
              "      <td>-0.245418</td>\n",
              "      <td>0.608063</td>\n",
              "      <td>-0.991950</td>\n",
              "      <td>&lt;pad&gt;</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>5.155348</td>\n",
              "      <td>3.876250</td>\n",
              "      <td>0.261261</td>\n",
              "      <td>-2.418043</td>\n",
              "      <td>0.437870</td>\n",
              "      <td>0.465762</td>\n",
              "      <td>2.436163</td>\n",
              "      <td>3.617084</td>\n",
              "      <td>cat</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>-1.559241</td>\n",
              "      <td>-2.174669</td>\n",
              "      <td>-1.384145</td>\n",
              "      <td>2.044338</td>\n",
              "      <td>2.503202</td>\n",
              "      <td>-3.054060</td>\n",
              "      <td>1.888509</td>\n",
              "      <td>-0.352399</td>\n",
              "      <td>chases</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>-3.267818</td>\n",
              "      <td>4.795168</td>\n",
              "      <td>2.291086</td>\n",
              "      <td>0.573898</td>\n",
              "      <td>-2.850217</td>\n",
              "      <td>1.131927</td>\n",
              "      <td>-3.155930</td>\n",
              "      <td>1.696312</td>\n",
              "      <td>mouse</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>-1.277344</td>\n",
              "      <td>-3.426071</td>\n",
              "      <td>-1.365879</td>\n",
              "      <td>0.884095</td>\n",
              "      <td>1.733199</td>\n",
              "      <td>-4.235494</td>\n",
              "      <td>2.297269</td>\n",
              "      <td>-1.856599</td>\n",
              "      <td>catches</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>5</th>\n",
              "      <td>-1.652216</td>\n",
              "      <td>-3.294243</td>\n",
              "      <td>-1.825176</td>\n",
              "      <td>2.506169</td>\n",
              "      <td>-0.239695</td>\n",
              "      <td>-3.938842</td>\n",
              "      <td>1.899568</td>\n",
              "      <td>-0.787619</td>\n",
              "      <td>eats</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>6</th>\n",
              "      <td>-2.081284</td>\n",
              "      <td>-0.991527</td>\n",
              "      <td>-2.824138</td>\n",
              "      <td>6.219646</td>\n",
              "      <td>3.111309</td>\n",
              "      <td>3.350767</td>\n",
              "      <td>0.195719</td>\n",
              "      <td>4.316447</td>\n",
              "      <td>runs</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>7</th>\n",
              "      <td>-0.572580</td>\n",
              "      <td>-3.827738</td>\n",
              "      <td>-2.566583</td>\n",
              "      <td>-1.857773</td>\n",
              "      <td>2.447538</td>\n",
              "      <td>-2.053251</td>\n",
              "      <td>-0.474032</td>\n",
              "      <td>1.734207</td>\n",
              "      <td>into</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>8</th>\n",
              "      <td>5.396008</td>\n",
              "      <td>3.136331</td>\n",
              "      <td>-1.476307</td>\n",
              "      <td>-3.636201</td>\n",
              "      <td>-3.398837</td>\n",
              "      <td>-2.878013</td>\n",
              "      <td>-2.151384</td>\n",
              "      <td>-2.437088</td>\n",
              "      <td>hole</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>9</th>\n",
              "      <td>-5.122947</td>\n",
              "      <td>2.646393</td>\n",
              "      <td>2.569002</td>\n",
              "      <td>-0.548096</td>\n",
              "      <td>-1.465672</td>\n",
              "      <td>0.519846</td>\n",
              "      <td>4.027491</td>\n",
              "      <td>-0.476111</td>\n",
              "      <td>says</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>10</th>\n",
              "      <td>-2.207423</td>\n",
              "      <td>2.251546</td>\n",
              "      <td>-1.246325</td>\n",
              "      <td>-1.410405</td>\n",
              "      <td>3.402066</td>\n",
              "      <td>2.043521</td>\n",
              "      <td>1.952095</td>\n",
              "      <td>-3.563816</td>\n",
              "      <td>bad</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>11</th>\n",
              "      <td>-0.852711</td>\n",
              "      <td>1.271755</td>\n",
              "      <td>3.417938</td>\n",
              "      <td>1.730503</td>\n",
              "      <td>1.551274</td>\n",
              "      <td>1.811487</td>\n",
              "      <td>1.327402</td>\n",
              "      <td>-2.425784</td>\n",
              "      <td>words</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>12</th>\n",
              "      <td>-0.830954</td>\n",
              "      <td>-0.238002</td>\n",
              "      <td>2.482760</td>\n",
              "      <td>1.094060</td>\n",
              "      <td>3.143410</td>\n",
              "      <td>-2.386743</td>\n",
              "      <td>-1.393598</td>\n",
              "      <td>-0.575753</td>\n",
              "      <td>and</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>13</th>\n",
              "      <td>-2.500729</td>\n",
              "      <td>-7.437476</td>\n",
              "      <td>0.381696</td>\n",
              "      <td>2.124998</td>\n",
              "      <td>1.121050</td>\n",
              "      <td>-4.185350</td>\n",
              "      <td>-1.555551</td>\n",
              "      <td>3.102188</td>\n",
              "      <td>are</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>14</th>\n",
              "      <td>3.923695</td>\n",
              "      <td>0.493951</td>\n",
              "      <td>-0.211973</td>\n",
              "      <td>3.274733</td>\n",
              "      <td>-1.499583</td>\n",
              "      <td>-3.073927</td>\n",
              "      <td>0.009240</td>\n",
              "      <td>1.534183</td>\n",
              "      <td>pals</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>15</th>\n",
              "      <td>3.928817</td>\n",
              "      <td>-0.561484</td>\n",
              "      <td>0.327170</td>\n",
              "      <td>3.035815</td>\n",
              "      <td>-1.720800</td>\n",
              "      <td>-2.495250</td>\n",
              "      <td>-0.713365</td>\n",
              "      <td>0.809275</td>\n",
              "      <td>chums</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>16</th>\n",
              "      <td>0.756436</td>\n",
              "      <td>0.817144</td>\n",
              "      <td>-0.026023</td>\n",
              "      <td>-1.671095</td>\n",
              "      <td>-0.971462</td>\n",
              "      <td>-3.027191</td>\n",
              "      <td>4.876816</td>\n",
              "      <td>-0.877191</td>\n",
              "      <td>stores</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>17</th>\n",
              "      <td>-1.088618</td>\n",
              "      <td>-1.546456</td>\n",
              "      <td>2.420271</td>\n",
              "      <td>6.035884</td>\n",
              "      <td>-0.142059</td>\n",
              "      <td>1.539912</td>\n",
              "      <td>1.930901</td>\n",
              "      <td>-3.473943</td>\n",
              "      <td>food</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>18</th>\n",
              "      <td>2.885014</td>\n",
              "      <td>-3.826505</td>\n",
              "      <td>-4.196731</td>\n",
              "      <td>0.857041</td>\n",
              "      <td>0.234334</td>\n",
              "      <td>3.452073</td>\n",
              "      <td>4.544253</td>\n",
              "      <td>0.045954</td>\n",
              "      <td>in</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>19</th>\n",
              "      <td>-0.762408</td>\n",
              "      <td>3.808641</td>\n",
              "      <td>3.753195</td>\n",
              "      <td>-1.143914</td>\n",
              "      <td>-4.631677</td>\n",
              "      <td>-1.858037</td>\n",
              "      <td>-2.033191</td>\n",
              "      <td>-5.890861</td>\n",
              "      <td>house</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>20</th>\n",
              "      <td>-0.740004</td>\n",
              "      <td>-1.818430</td>\n",
              "      <td>1.609721</td>\n",
              "      <td>5.877964</td>\n",
              "      <td>0.310047</td>\n",
              "      <td>-0.692936</td>\n",
              "      <td>2.140351</td>\n",
              "      <td>-1.573727</td>\n",
              "      <td>sleeps</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>21</th>\n",
              "      <td>4.888302</td>\n",
              "      <td>0.672865</td>\n",
              "      <td>-0.668151</td>\n",
              "      <td>2.791534</td>\n",
              "      <td>-1.121068</td>\n",
              "      <td>-2.138875</td>\n",
              "      <td>-0.546979</td>\n",
              "      <td>0.807099</td>\n",
              "      <td>buddies</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>22</th>\n",
              "      <td>-0.793976</td>\n",
              "      <td>-2.477415</td>\n",
              "      <td>2.654468</td>\n",
              "      <td>4.474229</td>\n",
              "      <td>1.701904</td>\n",
              "      <td>-0.669288</td>\n",
              "      <td>2.125443</td>\n",
              "      <td>-1.356035</td>\n",
              "      <td>lives</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>\n",
              "    <div class=\"colab-df-buttons\">\n",
              "\n",
              "  <div class=\"colab-df-container\">\n",
              "    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-e1cc2b26-6b24-4965-85ee-e4d873086331')\"\n",
              "            title=\"Convert this dataframe to an interactive table.\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
              "    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
              "  </svg>\n",
              "    </button>\n",
              "\n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    .colab-df-buttons div {\n",
              "      margin-bottom: 4px;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "    <script>\n",
              "      const buttonEl =\n",
              "        document.querySelector('#df-e1cc2b26-6b24-4965-85ee-e4d873086331 button.colab-df-convert');\n",
              "      buttonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "      async function convertToInteractive(key) {\n",
              "        const element = document.querySelector('#df-e1cc2b26-6b24-4965-85ee-e4d873086331');\n",
              "        const dataTable =\n",
              "          await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                    [key], {});\n",
              "        if (!dataTable) return;\n",
              "\n",
              "        const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "          + ' to learn more about interactive tables.';\n",
              "        element.innerHTML = '';\n",
              "        dataTable['output_type'] = 'display_data';\n",
              "        await google.colab.output.renderOutput(dataTable, element);\n",
              "        const docLink = document.createElement('div');\n",
              "        docLink.innerHTML = docLinkHtml;\n",
              "        element.appendChild(docLink);\n",
              "      }\n",
              "    </script>\n",
              "  </div>\n",
              "\n",
              "\n",
              "<div id=\"df-f6859897-dba6-4e8e-a2cd-01b3efe19d75\">\n",
              "  <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-f6859897-dba6-4e8e-a2cd-01b3efe19d75')\"\n",
              "            title=\"Suggest charts\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "     width=\"24px\">\n",
              "    <g>\n",
              "        <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
              "    </g>\n",
              "</svg>\n",
              "  </button>\n",
              "\n",
              "<style>\n",
              "  .colab-df-quickchart {\n",
              "      --bg-color: #E8F0FE;\n",
              "      --fill-color: #1967D2;\n",
              "      --hover-bg-color: #E2EBFA;\n",
              "      --hover-fill-color: #174EA6;\n",
              "      --disabled-fill-color: #AAA;\n",
              "      --disabled-bg-color: #DDD;\n",
              "  }\n",
              "\n",
              "  [theme=dark] .colab-df-quickchart {\n",
              "      --bg-color: #3B4455;\n",
              "      --fill-color: #D2E3FC;\n",
              "      --hover-bg-color: #434B5C;\n",
              "      --hover-fill-color: #FFFFFF;\n",
              "      --disabled-bg-color: #3B4455;\n",
              "      --disabled-fill-color: #666;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart {\n",
              "    background-color: var(--bg-color);\n",
              "    border: none;\n",
              "    border-radius: 50%;\n",
              "    cursor: pointer;\n",
              "    display: none;\n",
              "    fill: var(--fill-color);\n",
              "    height: 32px;\n",
              "    padding: 0;\n",
              "    width: 32px;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart:hover {\n",
              "    background-color: var(--hover-bg-color);\n",
              "    box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "    fill: var(--button-hover-fill-color);\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart-complete:disabled,\n",
              "  .colab-df-quickchart-complete:disabled:hover {\n",
              "    background-color: var(--disabled-bg-color);\n",
              "    fill: var(--disabled-fill-color);\n",
              "    box-shadow: none;\n",
              "  }\n",
              "\n",
              "  .colab-df-spinner {\n",
              "    border: 2px solid var(--fill-color);\n",
              "    border-color: transparent;\n",
              "    border-bottom-color: var(--fill-color);\n",
              "    animation:\n",
              "      spin 1s steps(1) infinite;\n",
              "  }\n",
              "\n",
              "  @keyframes spin {\n",
              "    0% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "      border-left-color: var(--fill-color);\n",
              "    }\n",
              "    20% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    30% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    40% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    60% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    80% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "    90% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "  }\n",
              "</style>\n",
              "\n",
              "  <script>\n",
              "    async function quickchart(key) {\n",
              "      const quickchartButtonEl =\n",
              "        document.querySelector('#' + key + ' button');\n",
              "      quickchartButtonEl.disabled = true;  // To prevent multiple clicks.\n",
              "      quickchartButtonEl.classList.add('colab-df-spinner');\n",
              "      try {\n",
              "        const charts = await google.colab.kernel.invokeFunction(\n",
              "            'suggestCharts', [key], {});\n",
              "      } catch (error) {\n",
              "        console.error('Error during call to suggestCharts:', error);\n",
              "      }\n",
              "      quickchartButtonEl.classList.remove('colab-df-spinner');\n",
              "      quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
              "    }\n",
              "    (() => {\n",
              "      let quickchartButtonEl =\n",
              "        document.querySelector('#df-f6859897-dba6-4e8e-a2cd-01b3efe19d75 button');\n",
              "      quickchartButtonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "    })();\n",
              "  </script>\n",
              "</div>\n",
              "    </div>\n",
              "  </div>\n"
            ]
          },
          "metadata": {},
          "execution_count": 123
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "from sklearn.decomposition import PCA"
      ],
      "metadata": {
        "id": "cOSd58eESUOx"
      },
      "execution_count": 124,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "pca = PCA(2)\n",
        "\n",
        "pca_vectors = pca.fit_transform(word_vectors.to_numpy()[:,:-1])"
      ],
      "metadata": {
        "id": "F1KZvZSSSe_S"
      },
      "execution_count": 125,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "import matplotlib.pyplot as plt\n",
        "plt.figure(figsize=(10, 10))\n",
        "plt.scatter(pca_vectors[:,0], pca_vectors[:,1])\n",
        "for i, word in enumerate(word_vectors['word'].tolist()):\n",
        "  x, y = pca_vectors[i]\n",
        "  plt.annotate(word, (x, y))\n",
        "plt.title(\"Visualizing Word Embeddings after reducing dimensions with PCA\")\n",
        "plt.xlabel(\"PCA-1\")\n",
        "plt.ylabel(\"PCA-2\")\n",
        "plt.show()"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 892
        },
        "id": "nRyhokXxSrVj",
        "outputId": "34625237-0df0-4b0c-e076-cb4c1b737f1a"
      },
      "execution_count": 126,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 1000x1000 with 1 Axes>"
            ],
            "image/png": "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P1spr9d3331n17dKlSppfr7Gjx9vFChQwDhy5Ihd+6hRowxHR0fj5MmThmH83/Hx9PQ0zp07l66azd67mf06G8bNz33Pnj1T1XD795WvvvrKkGR89NFHqfomJyfb1T527Fjb45TPS+/eve3WadeunVG4cGHb499++82QZAwbNsyuX69evVJtMy0Z2eeePXvafdZSXiNvb2/j8uXLtvbXX3/dkGRUq1bNuH79uq29S5cuhpOTkxEfH28YhmHExsYaXl5eRr9+/exqOnPmjGG1Wu3a0/vZGDp0qOHp6WncuHHDdJ9v/xmT8rkNCgoyrl27Zuv3008/GZKMMWPGZEkdafnuu+8MScbBgwcNwzCMH3/80XB2djaeeeYZ47nnnrP1e+SRR+y+l6X1s8nsM5jSt3nz5nbvwZdfftlwdHS0ey3TkvLePHz4sHH+/HkjIiLC+OyzzwxnZ2ejaNGiRlxcnBEdHW1IMtq0aZOh/W/VqpXRsGFD2+PPP//cyJcvX7q/ByD3YUgecixHR0d17txZ27dvtxvWs2DBAhUtWlSPP/646bopf6X76aefdP369fuu5dazG/Hx8bpw4YLq168vSdq7d+89b/fgwYPq3bu32rRpozfffPOu/QMDA9W4cWPbY29vb1WsWFHHjx+3ta1atUrBwcGqXr26ra1QoUK2673upkGDBnJwcLBdm7R161blz59fderUkbu7ux555BHbsLyUf1OuX/r555/l6OioIUOG2G3zlVdekWEYqWYiatKkiQIDA+3afv75Z9WvX19169a128/01p9iyZIlWrt2rd3XrFmzUvXr0aOH3TUT9erVk2EYdsM3U9pPnTqlGzdu2LUHBwerVq1atselSpVSmzZttHr1aiUlJckwDC1ZskStW7eWYRi6cOGC7atly5aKjo62vYd+/vln+fn5qUOHDrbtubm56cUXX7R7zj179ujcuXP6z3/+Y3edTa9evWS1WtN9jP7zn//YPW7cuHGq91L+/PnVr18/W5uDg4MGDhxot56rq6ucnJy0adMmXbp0Kd3Pn7Juisz8bH333Xdq3LixChYsaHfMmzdvrqSkpFTDJp999ll5e3une/u3v3ez4nXOiCVLlqhIkSJ21x6mSM8Z8LTeCxcvXrTNRpYy5HDAgAF2/dJ6vrRkxj537NjR7v1dr149SVK3bt3sJrKoV6+eEhMT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KtWZJUlycHJT/Kn9itmzTJEJVzWyVClNmjRJTz75pHx9ffXiiy+qZs2aKlmypN599129+uqrqbbRvHlz+fn5qUqVKipWrJit3dPTU7/88osmT56smJgY+fv727YNADkN1zABAJCLLQs7raGLwu7ab0rn6mpTvXiGtn3lyhUVL15cs2bNUvv27e+xQgDIHunNBpxhAgAgF/PxcMnUftLNacYvXLigSZMmycvLS88888y9lgcADz0CEwAAuVjdgELys7roTHR8quuYJMkiydfqoroBhdK9zZMnTyogIEAlSpTQ7NmzlS8fv04AyL34DgcAQC7m6GDR2NaB6j9vryySXWiy/P9/x7YOlKODJY2101a6dGnloRH9API4phUHACCXCwny04xuNeVrtR9252t10YxuNRUS5JdNlQHAw48zTAAA5AEhQX56ItBXuyKidC42Xj4eN4fhZeTMEgDkRQQmAADyCEcHi4LLFs7uMgAgR2FIHgAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCE4BcxTAMvfjiiypUqJAsFovCwsKy5HmaNm2qYcOGZcm2AQDAwyNfdhcAAJlp1apVmj17tjZt2qQyZcqoSJEi2V0SAADIwQhMAHKV8PBw+fn5qUGDBtldCgAAyAUYkgcg1+jVq5cGDx6skydPymKxqHTp0kpISNCQIUPk4+MjFxcXNWrUSLt377Zbb/Pmzapbt66cnZ3l5+enUaNG6caNG7blcXFx6tGjh9zd3eXn56dJkyY96F0DAADZhMAEINeYMmWK/vvf/6pEiRKKjIzU7t27NXLkSC1ZskRz5szR3r17Va5cObVs2VJRUVGSpNOnT+upp55SnTp19Pvvv2vGjBn68ssv9fbbb9u2O2LECG3evFnLli3TmjVrtGnTJu3duze7dhMAADxABCYAuYbVapWHh4ccHR3l6+srNzc3zZgxQxMnTtSTTz6pwMBAzZw5U66urvryyy8lSdOnT1fJkiU1bdo0VapUSW3btlVoaKgmTZqk5ORkXblyRV9++aU+/PBDPf7446patarmzJljdwYKAADkXlzDBCBHS0o2tCsiSudi4+Xj4aJkw7AtCw8P1/Xr19WwYUNbW/78+VW3bl0dOnRIknTo0CEFBwfLYrHY+jRs2FBXrlzRP//8o0uXLikxMVH16tWzLS9UqJAqVqz4APYOAABkNwITgBxr1f5IhS4/qMjo+P9r3H9U164nZV9RAAAgV2FIHoAcadX+SPWft9c+LEmKuXZDF68katX+SJUtW1ZOTk7aunWrbfn169e1e/duBQYGSpIqV66s7du3y7jlzNTWrVvl4eGhEiVKqGzZssqfP7927txpW37p0iUdOXIki/cQAAA8DAhMAHKcpGRDocsPyrhDn9DlB+Xi6qb+/ftrxIgRWrVqlQ4ePKh+/frp6tWr6tOnjyRpwIABOnXqlAYPHqy//vpLy5Yt09ixYzV8+HA5ODjI3d1dffr00YgRI7Rhwwbt379fvXr1koMD3z4BAMgLGJIHIMfZFRGV6szS7SKj47UrIkrvvfeekpOT1b17d8XGxqp27dpavXq1ChYsKEkqXry4fv75Z40YMULVqlVToUKF1KdPH7355pu2bU2cOFFXrlxR69at5eHhoVdeeUXR0dFZuo8AAODhYDFuHYeSy8XExMhqtSo6Olqenp7ZXQ6Ae7Qs7LSGLgq7a78pnaurTfXiWV8QAADIcdKbDRhTAiDH8fFwydR+AAAAZghMAHKcugGF5Gd1kcVkuUWSn9VFdQMKPciyAABALkRgApDjODpYNLb1zVnubg9NKY/Htg6Uo4NZpAJyh9mzZ8vLyyu7ywCAXI3ABCBHCgny04xuNeVrtR9252t10YxuNRUS5JdNlQEAgNyEWfIA5FghQX56ItBXuyKidC42Xj4eN4fhcWYJuU1iYqKcnJyyuwwAyJM4wwQgR3N0sCi4bGG1qV5cwWULE5aQLX766Sd5eXkpKSlJkhQWFiaLxaJRo0bZ+vTt21fdunWTJC1ZskRVqlSRs7OzSpcurUmTJtltr3Tp0ho/frx69OghT09Pvfjii5JuDsErVaqU3Nzc1K5dO128eNFuvd9//13NmjWTh4eHPD09VatWLe3Zsycrdx0Acj0CEwAA96lx48aKjY3Vvn37JEmbN29WkSJFtGnTJlufzZs3q2nTpvrtt9/UqVMnde7cWX/++afGjRunt956S7Nnz7bb5ocffqhq1app3759euutt7Rz50716dNHgwYNUlhYmJo1a6a3337bbp2uXbuqRIkS2r17t3777TeNGjVK+fPnz+rdB4BcjfswAQBwD5KSDbvhoIM6tVCXLl306quvql27dqpTp45CQ0N18eJFRUdHq0SJEjpy5IjGjRun8+fPa82aNbZtjRw5UitWrNCBAwck3TzDVKNGDS1dutTW5/nnn1d0dLRWrFhha+vcubNWrVqly5cvS5I8PT01depU9ezZ88EcBADIwbgPEwAAWWTV/kg1en+DuszcoaGLwtRl5g796xqg75avlmEY2rJli9q3b6/KlSvr119/1ebNm1WsWDGVL19ehw4dUsOGDe2217BhQx09etQ2pE+Sateubdfn0KFDqlevnl1bcHCw3ePhw4erb9++at68ud577z2Fh4dn8p4DQN5DYAIAIANW7Y9U/3l7FRkdb9eeXDRQu3du1/Ql65Q/f35VqlRJTZs21aZNm7R582Y1adIkQ89ToECBDNc2btw4HThwQE8//bQ2bNigwMBAu7NUAICMIzABAJBOScmGQpcfVFpj2Z1KVpGReE3j3p2oRx+9GY5SAtOmTZvUtGlTSVLlypW1detWu3W3bt2qChUqyNHR0fS5K1eurJ07d9q17dixI1W/ChUq6OWXX9aaNWvUvn17zZo1K2M7CQCwQ2ACACCddkVEpTqzlMLRxV35vUvrQth6+QfdHE736KOPau/evTpy5IjtDNMrr7yi9evXa/z48Tpy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TtXQoUNVqlQpOTk5aerUqTp+/Lh+/PFHjR8/3m7d//znPzp69KhGjBihw4cPa8GCBZo9e3YW7xEA5F0EJgAAMtm5WPOwJEkFqjwm40ai+rRvoYEDB2ro0KF68cUX5e3trdmzZ+u7775TYGCg3nvvPX344Yd265YqVUpLlizRDz/8oGrVqunTTz/Vu+++m5W7AwB5GrPkAQCQybaHX1SXmXcfJrewX30Fly38ACoCANwuvdmAM0wAAGSyugGF5Gd1kcVkuUWSn9VFdQMKPciyAAD3gMAEAEAmc3SwaGzrQElKFZpSHo9tHShHB7NIBQB4WBCYAADIAiFBfprRraZ8rS527b5WF83oVlMhQX7ZVBkAICO4cS0AAFkkJMhPTwT6aldElM7FxsvH4+YwPM4sAUDOQWACACALOTpYmNgBAHIwhuQBAAAAgAkCEwAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCEwAAAACYIDABAAAAgAkCEwCbpk2batiwYZKk0qVLa/LkydlaDwAAQHbLl90FAHg47d69WwUKFMjuMgAAALIVgQlAmry9vbO7BAAAgGzHkDwAabp1SN7zzz+v5557zm759evXVaRIEX399deSpOTkZE2YMEEBAQFydXVVtWrVtHjxYlv/S5cuqWvXrvL29parq6vKly+vWbNmPbD9AQAAuBecYQJwV127dlXHjh115coVubu7S5JWr16tq1evql27dpKkCRMmaN68eSpXrpzKlSunrl27qlu3bvL29laTJk301ltv6eDBg1q5cqWKFCmiY8eO6dq1a9m5WwAAAHdF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Vq1adu2dO3eWYRjq2bNnphYHAAAAANkpQ4Gpf//++uWXX9Jc1qVLFxmGoZkzZ2ZKYQAA3ItevXrp8uXL+uGHH7K7FABALpChWfJyOmbJA4Dcj8AEAEiPLJklLy0DBgxIdT8mAADScunSJV25cuWBPue///6rGzduPNDnBADkHvcdmObNm6eYmJjMqAUAkAvduHFDK1asUMeOHeXn56fw8HCdOHFCFotFixYtUoMGDeTi4qKgoCBt3rzZtl5SUpL69OmjgIAAubq6qmLFipoyZYrdtpOSkjR8+HB5eXmpcOHCGjlypG4fODFz5kyVKFFCr776qv78888Hss8AgNzjvgNTHhrRBwDIgD///FOvvPKKSpQooR49esjb21sbN25UtWrVbH1GjBihV155Rfv27VNwcLBat26tixcvSpKSk5NVokQJfffddzp48KDGjBmjN954Q99++61t/UmTJmn27Nn66quv9OuvvyoqKkpLly61q+O1117TlClTdOjQIdWsWVM1a9bUJ598ovPnzz+YAwEAyNHu+xomDw8P/f777ypTpkxm1ZRluIYJALLWxYsXNW/ePM2ZM0cHDhzQU089pe7du6tVq1ZycnKy9Ttx4oQCAgL03nvv6bXXXpN080xUQECABg8erJEjR6a5/UGDBunMmTNavHixJKlYsWJ6+eWXNWLECLtt1KpVK81rmM6dO6cFCxbo66+/1v79+/XUU0+pZ8+eat26tfLly9A8SACAHO6BXcMUGxtrC0vJycn66aef7neTAIAcIinZ0Pbwi1oWdlrbwy9qyiefaNiwYXJ3d9exY8e0dOlStW/f3i4s3So4ONj2/3z58ql27do6dOiQre1///ufatWqJW9vb7m7u+vzzz/XyZMnJUnR0dGKjIxUvXr1Um3DjI+Pj4YNG6a9e/dq2bJl2r59u9q3b6/9+/ff76EAAORSmfLntGPHjumrr77S7Nmzdf78eV2/fj0zNgsAeIit2h+p0OUHFRkdb2srbAlUj0EjtX31UlWpUkXPPvusunfvrqZNm8rBIWN/o1u0aJFeffVVTZo0ScHBwfLw8NDEiRO1c+fOe645NjZWixcv1ty5c/XLL7+oSZMm6tmzpwIDA+95mwCA3O2ezzBdu3ZNX3/9tR599FFVrFhR27Zt05gxY/TPP/9kZn0AgIfQqv2R6j9vr11YkqQow12/FHhUn3y/WatWrZKTk5Pat28vf39/jRo1SgcOHLDrv2PHDtv/b9y4od9++02VK1eWJG3dulUNGjTQgAEDVKNGDZUrV07h4eG2/larVX5+fnYBKmUbt0pKStLKlSv1/PPPq2jRonrvvff0+OOP6/jx41q/fr169OhhegYMAIAMB6bdu3frpZdekq+vryZPnqw2bdrIYrFo+vTp+s9//qOiRYtmRZ0AgIdEUrKh0OUHldYFsCltocsPql79YH322Wc6c+aMJk6cqLCwMFWrVs1uprr//e9/Wrp0qf766y8NHDhQly5dUu/evSVJ5cuX1549e7R69WodOXJEb731lnbv3m33fEOHDtV7772nH374QX/99ZcGDBigy5cv2/V599131aVLF3l4eGjdunU6fPiwRo8erVKlSmXiUQEA5FYZmvThkUceUUxMjJ5//nl17dpVVapUkSTlz59fv//++0M/pIFJHwDg/m0Pv6guM3fctd/CfvUVXLawXdu///4rd3d3RUVFKSAgQAsWLNDkyZMVFhamcuXKadq0aWrWrJkkKSEhQf/5z3+0dOlSWSwWdenSRVarVStXrlRYWJikm2eUXn31Vc2aNUsODg7q3bu3Lly4oOjoaNukDydOnJCvr69cXFwy9TgAAHK29GaDDAUmZ2dnPffcc+revbuaN28ui8UiicAEAHnJsrDTGroo7K79pnSurjbVi6e5LGWWvH379ql69eqZWyAAAOmQJbPkHT9+XBUrVlT//v1tNwHct2+fLTgBAHI/H4/0nalJbz8AAB5mGQpMxYsX1+jRo3Xs2DHNnTtXZ86cUcOGDXXjxg3Nnj1bR44cyao6AQAPiboBheRndZHZn8oskvysLqobUOhBlgUAQJa451nyHnvsMc2bN0+RkZGaNm2aNmzYoEqVKumRRx7JzPoAAA8ZRweLxra+OQT79tCU8nhs60A5OpiPPihdurQMw2A4HgDgoXffN661Wq0aMGCA9uzZo71796pp06aZUBYA4GEWEuSnGd1qytdqP+zO1+qiGd1qKiTIL5sqAwAgc2XoxrXXrl3T2rVr1axZM3l4eNgti4mJ0cmTJzVx4sRMLRAA8HAKCfLTE4G+2hURpXOx8fLxuDkM705nlgAAyGkyFJg+//xz/fjjj3rmmWdSLfP09NQnn3yiU6dOaeDAgZlWIADg4eXoYEk1dTgAALlJhobkzZ8/X8OGDTNdPmzYMM2ZM+d+awIAAACAh0KGAtPRo0dVrVo10+WPPPKIjh49et9FAQAAAMDDIEOB6caNGzp//rzp8vPnz+vGjRv3XRQAAAAAPAwyFJiqVKmidevWmS5fs2aNqlSpct9FAQAAAMDDIEOBqXfv3ho/frx++umnVMuWL1+ud955R71798604gAAAAAgO2VolrwXX3xRv/zyi5555hlVqlRJFStWlCT99ddfOnLkiDp16qQXX3wxSwoFAAAAgActwzeunTdvnr755htVqFBBR44c0eHDh1WxYkUtXLhQCxcuzIoaAQAAACBbZOgMU1JSkj788EP9+OOPSkxMVKtWrTRu3Di5urpmVX0AAAAAkG0ydIbp3Xff1RtvvCF3d3cVL15cn3zyCTepBQAAAJBrZSgwff3115o+fbpWr16tH374QcuXL9f8+fOVnJycVfUBAAAAQLbJUGA6efKknnrqKdvj5s2by2Kx6N9//830wgAAAAAgu2X4xrUuLi52bfnz59f169cztSgAAAAAeBhkaNIHwzDUq1cvOTs729ri4+P1n//8RwUKFLC1ff/995lX4W3+97//aeLEiTpz5oyqVaumqVOnqm7duln2fAAAAADyrgwFpp49e6Zq69atW6YVczfffPONhg8frk8//VT16tXT5MmT1bJlSx0+fFg+Pj4PrA4AAAAAeYPFMAwju4tIr3r16qlOnTqaNm2aJCk5OVklS5bU4MGDNWrUqLuuHxMTI6vVqujoaHl6emZ1uQAAAAAeUunNBhm+cW12SUxM1G+//abmzZvb2hwcHNS8eXNt3749zXUSEhIUExNj9wUAAAAA6ZVjAtOFCxeUlJSkokWL2rUXLVpUZ86cSXOdCRMmyGq12r5Kliz5IEoFAAAAkEvkmMB0L15//XVFR0fbvk6dOpXdJQEAAADIQTI06UN2KlKkiBwdHXX27Fm79rNnz8rX1zfNdZydne1m9AMAAACAjMgxZ5icnJxUq1YtrV+/3taWnJys9evXKzg4OBsrAwAAAJBb5ZgzTJI0fPhw9ezZU7Vr11bdunU1efJkxcXF6YUXXsju0gAAAADkQjkqMD333HM6f/68xowZozNnzqh69epatWpVqokgAAAAACAz5Kj7MN0v7sMEAAAAQMqF92ECAAAAgAeNwAQAAAAAJghMQB524sQJ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KRaWJMkwDHtYkqQtW7bo/Pnz6tKli/r27atVq1bpl19+Kc+yAQAVCIEJAFDh2Gw2bdq0Sf/4xz9033336eDBg2rSpEmJrn377bfVq1cvubq6KiwsTA0aNNB7771XxhUDACoqAhMAoMLYuHGjatSoIQ8PDz344IOKiYnRlClTVNLV5WfPntX777+vvn372o/17dtXb7/9tv19jRo17K/BgweXeh8AABWLm6MLAACgpDp37qxFixapatWqCggIkJvb5T/GGjdurH379l33+nfeeUcXLlxQVFSU/ZjNZpPVatWBAwfUuHFjpaam2s95e3uXeh8AABULM0wAgAqjevXqatSokYKDg+1hSZJ69+6tAwcOaP369cWusdlsys7OlnR5Od6YMWOUmppqf+3atUt33323/vznP0uSGjVqZH/5+vqWT8cAALctAhMAoMLr2bOnYmJi9OSTT2rGjBnasWOHfvzxR23cuFFdunSxbzO+c+dODRw4UGFhYYVeTz75pJYvX27/TqeruRKwzp07p9OnTys1NVV79uwpx14CAByBbcUBABXC1bYV/y2r1arFixfrz3/+s77//nu5ubkpNDRUf/zjHxUbG6tx48Zp8+bN+v7774tde/LkSf3ud7/T2rVr9fDDD1/1/oZhFDtWr149paen30q3AAC3OQITAAAAAJhgSR4AAAAAmCAwAQAAAIAJAhMAAAAAmCAwAQAAAIAJAhMAAAAAmCAwAQAAAIAJAhMAAAAAmCAwAQAAAIAJAhMAAAAAmCAwAQAAAIAJAhMAAAAAmPh/fJL5/okCFmQAAAAASUVORK5CYII=\n"
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [],
      "metadata": {
        "id": "33JsaABsxf96"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [],
      "metadata": {
        "id": "Fz1yhaacC22z"
      },
      "execution_count": null,
      "outputs": []
    }
  ]
}